/**
 *
 */
package net.zantetu.matomeroid.dto;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * 画面遷移用履歴DTO。
 * 永続化はしない。アプリケーションを起動するごとに新規作成する
 * @author aono_masashi
 *
 */
public class PageHistoryDto implements Serializable{

	private static final long serialVersionUID = 5241607961012060895L;
	private LinkedList<PageInfoDto> historyList;

	private int maxLength;

	public PageHistoryDto() {
		// デフォルトは20件にしとく
		this(20);
	}

	public PageHistoryDto(int maxLength){
		this.historyList = new LinkedList<PageInfoDto>();
		this.maxLength = maxLength;
	}

	public void addHistoryList(PageInfoDto page){
		// すでに見ているページだったら昔の履歴を消して一番後ろに追加
		if(historyList.contains(page)) historyList.remove(page);
		// 最大件数を超えてたら最初の履歴を消して追加
		if(historyList.size() >= maxLength) historyList.remove(0);
		historyList.add(page);
	}

	public List<PageInfoDto> getHistory(){
		List<PageInfoDto> ret = new ArrayList<PageInfoDto>();

		for(int i=historyList.size() -1;i>=0;i--){
			ret.add(historyList.get(i));
		}

		return ret;
	}
}
